package com.yunyao.web.controller;

import com.yunyao.common.dto.base.BaseAreaDto;
import com.yunyao.common.web.util.YResult;
import com.yunyao.framework.service.base.BaseAreaService;
import com.yunyao.framework.vo.base.BaseAreaVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

/**
 * @author chenyejian
 * @date 2024-09-4
 */
@RestController
@RequestMapping("/baseArea")
public class BaseAreaController {

    @Autowired
    private BaseAreaService baseAreaService;

    /**
     * 获取省市区列表
     *
     * 通过GET请求方式提供部门树结构数据，该方法作为控制器接收前端请求，并调用服务层处理业务逻辑
     *
     * @param baseAreaDto 查询条件封装对象，用于传递查询参数
     *
     * 该方法不直接处理业务逻辑，而是将请求转发给deptService处理
     */
    @GetMapping("/getMap")
    public YResult<Map<String,String>> getList(BaseAreaDto baseAreaDto) {
        /**
         * 如果查询条件为空，或者对象内的所有属性都为空，则默认查询父节点id为0的数据，
         */
        if (baseAreaDto == null && baseAreaDto.getParentId() == null) {
            baseAreaDto.setParentId("0");
        }
        List<BaseAreaVO> baseAreaVOList = baseAreaService.getList(baseAreaDto);
        LinkedHashMap map = new LinkedHashMap();
        map = baseAreaVOList.stream().collect(
                LinkedHashMap::new,
                (m, v) -> m.put(v.getFAreacode(), v.getFAreaname()),
                Map::putAll);
        return YResult.success(map);
    }
}
